program Project1; //Zadanie 7.3

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
 n = 10;

type macierz = array[1..n, 1..n] of integer;

matrix=class
 a, b, c : macierz;
 f:Text; //zmienna plikowa

 procedure czytaj_dane();
 procedure przetworz_dane();
 procedure zapisz_dane_do_pliku();
 procedure czytaj_dane_z_pliku();
end;

procedure matrix.czytaj_dane();
var
 i, j:integer;

begin
{wpisywanie do tablicy a}
 Writeln;
 Writeln('Tworzymy tablice a[i,j].');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     if i =2 then a[i,j]:=1
     else a[i,j]:=0;
     Write(a[i,j]:2); //wyswietlamy tablice a[i,j] na ekranie
    end; {j}
    Writeln;
  end; {i}   {Koniec wpisywania}
end;

procedure matrix.przetworz_dane();
var
 i, j:integer;

begin
{przepisywanie elementow z tablicy a do tablicy b}
 Writeln;
 Writeln('Wyswietlamy tablice b[i,j] na ekranie.');
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     b[i,j]:=a[j,i];
     Write(b[i,j]:2); //wyswietlamy tablice b[i,j] na ekranie
    end; {j}
    Writeln;
  end; {i}   {Koniec przepisywania}
end;

procedure matrix.zapisz_dane_do_pliku();
var
i, j:integer;

begin
 Writeln('Zapisujemy tablice b[i,j] do pliku dane.txt.');
 Assign(f,'dane.txt'); //skojarzenie zmiennej plikowej z plikiem dane.txt
 Rewrite(f); //tworzymy i otwieramy plik
  for i:=1 to n do
   begin
    for j:=1 to n do
     begin
      Write(f,b[i,j]:2); //zapisujemy tablice b[i,j] do pliku dane.txt
     end; {j}
   end;   {i}
 Close(f); //zamkniecie pliku
end;

procedure matrix.czytaj_dane_z_pliku();
var
 i,j:integer;

begin
 Writeln;
 Writeln('Odczytujemy tablice c[i,j] z pliku dane.txt.');
 Assign(f,'dane.txt'); //skojarzenie zmiennej plikowej z plikiem dane.txt
 Reset(f); //otwarcie pliku, ktory juz istnieje
 for i := 1 to n do
  begin
   for j:= 1 to n do
    begin
     Read(f,c[i,j]); //czytamy tablice c[i,j] z pliku
     Write(c[i,j]:2); //wyswietlamy tablice c[i,j] na ekranie
    end;  {j}
   Writeln;
  end; {i}
 Close(f); //zamkniecie pliku
end;

var  matrix1:matrix;

begin
 matrix1:=matrix.Create; //konstruktor
 matrix1.czytaj_dane();
 matrix1.przetworz_dane();
 matrix1.zapisz_dane_do_pliku();
 matrix1.czytaj_dane_z_pliku();
 matrix1.Free; //destruktor

 Readln; //czeka na nacisniecie klawisza ENTER
end.
